{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-03-24T09:57:25.408862Z",
     "start_time": "2022-03-24T09:57:24.151225Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "建设地点、市:\n",
      "['1、本项目为河南正通食品科技有限公司年产3万吨食品用植物油脂建设项目了#生产车间，建设地点：荥阳市建设路与工c北路交叉口西南角']\n",
      "----------------\n",
      "基本风压:\n",
      "['3.1.1基本风压0.45kN/M2(R=50),承载力计算时按基本风压采用，风荷载体形系数1.30，地面粗糙度类别：B类.']\n",
      "----------------\n",
      "基本雪压:\n",
      "['3.1.2基本雪压0.45kN/m2(R=100),屋面积雪分布系数1.0，屋面小塔楼周边2h范围屋面积雪分布系数2.0。']\n",
      "----------------\n",
      "安全等级:\n",
      "['4、2建筑结构安全等级为二级，结构重要性系数为1.0。']\n",
      "----------------\n",
      "设计工作年限:\n",
      "['########&&&&&&&&&']\n",
      "----------------\n",
      "设防类别:\n",
      "['4.3.2本工程抗震设防类别为标准设防类（简称丙类），按7度(0.10g)进行抗震计算，按7度采取抗震措施。', '建筑抗震设防类别']\n",
      "----------------\n",
      "设防烈度:\n",
      "['4.3.1本工程抗震设防烈度：7度：设计基本加速度值：0.10g。']\n",
      "----------------\n",
      "抗震等级:\n",
      "['抗震等级', '四级']\n",
      "----------------\n",
      "地基基础设计等级、设计等级:\n",
      "['地基基础设计等级', '丙级']\n",
      "----------------\n",
      "√---2.4本建筑物应按建筑图中注明的功能使用，在设计使用年限内未经技术鉴定或设计许可，不得改变结构的用途和使用环境。\n",
      "相关性= 0.53125\n",
      "规范对应条文：未经技术鉴定或设计许可不得改变设计文件规定的功能和使用条件\n",
      "['0.4470588235294118', '0.45', '0.53125', '0.621581560508061']\n",
      "-----------------------------------\n",
      "√---2.5结构在设计使用年限内应遵守以下规定：建立定期检测、维修制度；设计中可更换的构件应按规定更换：构件表面的防护层，\n",
      "相关性= 0.3418817293789138\n",
      "规范对应条文：应建立定期检测，维护制度\n",
      "['0.2857142857142857', '0.29', '0.7941176470588236', '0.3418817293789138']\n",
      "-----------------------------------\n",
      "√---2.5结构在设计使用年限内应遵守以下规定：建立定期检测、维修制度；设计中可更换的构件应按规定更换：构件表面的防护层，\n",
      "相关性= 0.385694607919935\n",
      "规范对应条文：对设计规定（橡胶支座）规定的构件，节点支座部件等应及时更换\n",
      "['0.25287356321839083', '0.25', '0.47058823529411764', '0.385694607919935']\n",
      "-----------------------------------\n",
      "√---2.5结构在设计使用年限内应遵守以下规定：建立定期检测、维修制度；设计中可更换的构件应按规定更换：构件表面的防护层，\n",
      "相关性= 0.4276686017238499\n",
      "规范对应条文：构件表面的防火、防腐保护层，应按设计规定和维护规范进行维护或更换\n",
      "['0.2', '0.2', '0.4411764705882353', '0.4276686017238499']\n",
      "-----------------------------------\n",
      "√---应按规定维护或更换：结构出现可见的耐久性缺陷时应及时进行处理。\n",
      "相关性= 0.44776119402985076\n",
      "规范对应条文：结构及构件、节点、支座等超出设计规定的变形和耐久性缺陷时，应进行及时处理\n",
      "['0.44776119402985076', '0.45', '0.19047619047619047', '0.3034330424545042']\n",
      "-----------------------------------\n",
      "×#############\n",
      "规范对应条文：遭遇地震、火灾等灾害时，早后应对结构进行鉴定评估，并按照评估过意见处理后方可继续使用。\n",
      "-----------------------------------\n",
      "√---《建统设计防火规范》\n",
      "相关性= 0.5773502691896258\n",
      "规范对应条文：防火规范\n",
      "['0.5714285714285714', '0.57', '0.6666666666666667', '0.5773502691896258']\n",
      "-----------------------------------\n"
     ]
    }
   ],
   "source": [
    "# -*- coding: utf-8 -*-\n",
    "\"\"\"\n",
    "Created on Sat Mar 19 18:43:57 2022\n",
    "2022-03-24 10:48:22 \n",
    "@author: Administrator\n",
    "\"\"\"\n",
    "\n",
    "# -*- coding: utf-8 -*-\n",
    "# 作者：song4875343\n",
    "# 描述：利用网上给出的计算两个中文语句的相似度（四种方法）来判断图纸总说明中关于强制性条文中（材料，荷载，施工，维护）说明性文字\n",
    "#        是否有描述，然后给出一个违反条文的清单。\n",
    "#        图纸校审四部分内容，项目概况\n",
    "# 日期: 2022年3月18日\n",
    "import jieba                  # jieba分词\n",
    "import difflib                # 方法一：Python自带标准库计算相似度的方法，可直接用\n",
    "from fuzzywuzzy import fuzz   # 方法二：Python自带标准库计算相似度的方法，可直接用\n",
    "import numpy as np\n",
    "from collections import Counter\n",
    "import re\n",
    "import copy\n",
    "\n",
    "# 方法三：编辑距离，又称Levenshtein距离\n",
    "def edit_similar(str1, str2):   # str1，str2是分词后的标签列表\n",
    "    len_str1 = len(str1)\n",
    "    len_str2 = len(str2)\n",
    "    taglist = np.zeros((len_str1+1, len_str2+1))\n",
    "    for a in range(len_str1):\n",
    "        taglist[a][0] = a\n",
    "    for a in range(len_str2):\n",
    "        taglist[0][a] = a\n",
    "    for i in range(1, len_str1+1):\n",
    "        for j in range(1, len_str2+1):\n",
    "            if(str1[i - 1] == str2[j - 1]):\n",
    "                temp = 0\n",
    "            else:\n",
    "                temp = 1\n",
    "            taglist[i][j] = min(taglist[i - 1][j - 1] + temp, taglist[i][j - 1] + 1, taglist[i - 1][j] + 1)\n",
    "    return 1-taglist[len_str1][len_str2] / max(len_str1, len_str2)\n",
    "\n",
    "# 方法四：余弦相似度\n",
    "def cos_sim(str1, str2):        # str1，str2是分词后的标签列表\n",
    "    co_str1 = (Counter(str1))\n",
    "    co_str2 = (Counter(str2))\n",
    "    p_str1 = []\n",
    "    p_str2 = []\n",
    "    for temp in set(str1 + str2):\n",
    "        p_str1.append(co_str1[temp])\n",
    "        p_str2.append(co_str2[temp])\n",
    "    p_str1 = np.array(p_str1)\n",
    "    p_str2 = np.array(p_str2)\n",
    "    return p_str1.dot(p_str2) / (np.sqrt(p_str1.dot(p_str1)) * np.sqrt(p_str2.dot(p_str2)))\n",
    "\n",
    "#第一个判别函数，用于搜索项目基本信息的。    \n",
    "def j_fun1(sens,g_strs):\n",
    "    r_strs=[[] for i in range(len(g_strs))]\n",
    "    i=0             \n",
    "    for g_str in g_strs:\n",
    "        str1=g_str\n",
    "        j=0\n",
    "        n=g_strs[i].count(\"、\")\n",
    "        if n>0 :\n",
    "            list_n=g_strs[i].split(\"、\")\n",
    "            for k_str in list_n:\n",
    "                str1=k_str\n",
    "                for j in range(len(sens)):\n",
    "                    str2=sens[j]\n",
    "                    if str2 !=\"\":\n",
    "                        if str1 in str2:r_strs[i].append(str2)\n",
    "                        if str1==str2 :r_strs[i].append(sens[j+1])\n",
    "                        m1=r_strs[i]\n",
    "                        m2=list(set(m1))\n",
    "                        m2.sort(key=m1.index)\n",
    "                        r_strs[i]=m2\n",
    "                    j+=1\n",
    "        else:\n",
    "            for j in range(len(sens)):\n",
    "                str2=sens[j]\n",
    "                if str2 !=\"\":\n",
    "                    if str1 in str2:r_strs[i].append(str2)\n",
    "                    if str1==str2 :r_strs[i].append(sens[j+1])\n",
    "                    m1=r_strs[i]\n",
    "                    m2=list(set(m1))\n",
    "                    m2.sort(key=m1.index)\n",
    "                    r_strs[i]=m2\n",
    "                j+=1\n",
    "        if not r_strs[i] :r_strs[i].append(\"########&&&&&&&&&\")\n",
    "        i+=1\n",
    "    return r_strs\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "#第三个判别函数\n",
    "def j_fun3(sens,g_strs):\n",
    "    g_flag=[0 for i in range(len(g_strs))]\n",
    "    r_strs=[[0,\"\"] for i in range(len(g_strs))]\n",
    "    i=0\n",
    "    difs=[[\"0\",\"0\",\"0\",\"0\"] for j in range(len(g_strs))]\n",
    "    for g_str in g_strs:\n",
    "        str1=g_str\n",
    "        diff_n=0\n",
    "        diff_tem=0\n",
    "        str_tem=sens[0]\n",
    "        dif=[\"0\",'0','0','0']\n",
    "        for str2 in sens:\n",
    "            if str2 !=\"\":\n",
    "                str11 = jieba.lcut(str1)\n",
    "                str22 = jieba.lcut(str2)\n",
    "                diff_result = difflib.SequenceMatcher(None, str1, str2).ratio()\n",
    "                diff_rb=min(diff_result,fuzz.ratio(str1, str2)/100)\n",
    "                diff_rc=min(cos_sim(str11, str22),edit_similar(str11, str22))\n",
    "                diff_ra=max(diff_rb,diff_rc)\n",
    "                diff_rd=max(diff_result,fuzz.ratio(str1, str2)/100,cos_sim(str11, str22),edit_similar(str11, str22))\n",
    "                if (diff_ra>0.30 and diff_rd>0.45) or diff_ra>0.35:\n",
    "                # 备注，第一种，第二种方法比较重视整体，第二第三种方法重视局部相似，某一种方法过高并不代表什么，所有经过多种比较目前的这种打分方法是比较合适的。\n",
    "                #经过了大量的测试都是可以的。    \n",
    "                    #print('方法一：Python标准库difflib的计算分值：' + str(diff_result))\n",
    "                    #print('方法二：Python标准库fuzz的计算分值：' + str(fuzz.ratio(str1, str2)/100))\n",
    "                    #print('方法三：编辑距离的计算分值：' + str(edit_similar(str11, str22)))\n",
    "                    #print('方法四：余弦相似度的计算分值：' + str(cos_sim(str11, str22)))\n",
    "                    diff_n+=1\n",
    "                    if diff_ra>diff_tem:\n",
    "                        diff_tem=diff_ra;str_tem=str2\n",
    "                        dif=[str(diff_result),str(fuzz.ratio(str1, str2)/100),str(edit_similar(str11, str22)),str(cos_sim(str11, str22))]\n",
    "                    g_flag[i]=1\n",
    "\n",
    "        i+=1\n",
    "        if g_flag[i-1]:\n",
    "            #print( \"√---\"+g_str)\n",
    "            #print(\"相关性=\",diff_tem)\n",
    "            difs[i-1]=dif\n",
    "            \n",
    "            r_strs[i-1]=[diff_tem,str_tem]\n",
    "            #print( \"-----------------------------------\")\n",
    "        else:\n",
    "            #print(\"×#############\"+g_str)\n",
    "            #print( \"-----------------------------------\")\n",
    "            r_strs[i-1]=[diff_tem,\"\"]\n",
    "    return r_strs,difs\n",
    "#返回的结果是个两重列表，每一个元素列表对应每一条规范数据库，元素列表的第一个元素是相关系数，第二条是规范所对应的图纸字符串\n",
    "\n",
    "\n",
    "# 下面两个字符串第一个sens为总说明形成字符串，第二个字符串为特征字符串\n",
    "#特征字符串一般有三种模式1.第一个模式是为了搜索出项目信息概况对应的语句，所以每找出一句仅需要几个关键词即可\n",
    "#                        2.第二个模式需要精确的获取规范的版本号，这里面需要详细定位\n",
    "#                        3.第三个是规范描述强条列表。这个函数我已经编写过了。通过语句判断基本上过滤出与规范条文符合的语义近似语句即可。\n",
    "sens=[\"楼梯\",\"3.5\",'1.工程概况：', '1、本项目为河南正通食品科技有限公司年产3万吨食品用植物油脂建设项目了#生产车间，建设地点：荥阳市建设路与工c北路交叉口西南角', '1.2本工程为多层钢框架结构，工程概况见表1.2：', '表1.2工程概况', '子项名称', '层数', '室内外高差房屋高度', '结构类型', '基础类型', '地基形式', '地上', '3#生产车间', '3', '0.300m', '14.900', '钢框架', '独立基础', '天然地基', '1.3本工程各个房间具体使用功能详见建筑施工图。', '1.4本工程士0.000相应绝对标高为135.80', '2.设计总则：', '2.1图中计量单位（除注明外）：长度单位为毫(mm);标高单位为(m);角度单位为度()，', '2.2施工时一律根据图中标注尺寸施工，不得测量图纸的尺寸施工。施工单位在施工前须核对图中尺寸，包括与其他各专c图纸之间的核对。', '遇到有图纸和实际情况存在差异时，应及时通知设计人员进行修改。', '2.了本施工图按国家设计现行标准进行设计，施工时除应遵守本说明及各设计图纸说明外，尚应满足现行国家及所在地区的有关规范，规程、', '施工验收标准及所选用标准图集的要求。', '2.4本建筑物应按建筑图中注明的功能使用，在设计使用年限内未经技术鉴定或设计许可，不得改变结构的用途和使用环境。', '2.5结构在设计使用年限内应遵守以下规定：建立定期检测、维修制度；设计中可更换的构件应按规定更换：构件表面的防护层，', '应按规定维护或更换：结构出现可见的耐久性缺陷时应及时进行处理。', '2.6本施工图混凝土结构部分是根据16G101《混凝土结构施工图平面整体表示方法制图规则和构造详图》系列图集进行绘制。除设计人', '根据本工程具体情况对16G101图集进行局部更改和补充外，其它构造详图均应按图集要求施工。混凝土结构施工时可参照18G901', '《混凝土结构施工钢筋排布规则与构造详图》系列图集进行钢筋排布和深化施工。', '2.7施工单位在施工时应与建筑、给排水、暖通，空调、电气等其他专c图纸配合施工。施工单位在施工前应全面审阅各专c设计图纸并及时', '进行施工图会审工作。施工中出现难以确定的问题时应及时与设计人员协商解决。', '2.8本施工图应经具有相应资质的施工图审查机构审查合格后，才能用于工程施工。', '3.设计依据；', '3.1自然条件：', '3.1.1基本风压0.45kN/M2(R=50),承载力计算时按基本风压采用，风荷载体形系数1.30，地面粗糙度类别：B类.', '3.1.2基本雪压0.45kN/m2(R=100),屋面积雪分布系数1.0，屋面小塔楼周边2h范围屋面积雪分布系数2.0。', '3.2本工程设计所遵循的主要国家及地方规范、规程、标准和规定见表3.2：', '表3.2本工程设计遵循的主要规范规程，标准和规定', '名称', '编号及版本号', '《建筑结构可靠性设计统一标准', 'GB50068-2016', '《建筑工程抗震设防分类标准》', 'GB50223-2008', '《建筑结构荷载规范》', 'GB50009-2010', '《混凝土结构设计规范》(2017版', 'GB50010-2010', '《建筑抗震设计规范》(2016版', 'GB50011-2010', '《建筑地基基础设计规范', 'GB50007-2011', '《建筑工程设计文件编制深度规定》', '建质2016247号', '《建筑钢结构焊接技术规程', 'JGJ81-2002、J218-2002', '《建统设计防火规范》', 'GB50016-2014(2018年版', '《钢结构工程施工质量验收标准》', 'GB50205-2020', '《砌体结构设计规范》', 'GB50003-2011', '《钢结构设计标准》', 'GB50017-2017', '《钢结构焊接规范》', 'GB50661-2011', '《钢结构高强螺栓连接的设计', 'JGJ82-91', '施工及验收规范》', '《建筑钢结构防火技术规范》', 'GB51249-2017', '《低合金高强度结构钢》', 'GB/T1591-2018', '3.3岩土工程勘察报告：', '1.本工程根据甲方提供的2011年9月份《河南正通化工有限公司年产1万吨食品乳化剂项目岩土工程勘察报告》进行设计', '3.4建设单位提供的有关本工程的设计任务书。', '4.结构设计主要技术指标：', '4.1设计基准期为50年，结构设计使用年限为50年。', '4、2建筑结构安全等级为二级，结构重要性系数为1.0。', '4.3抗震设防有关参数', '4.3.1本工程抗震设防烈度：7度：设计基本加速度值：0.10g。', '4.3.2本工程抗震设防类别为标准设防类（简称丙类），按7度(0.10g)进行抗震计算，按7度采取抗震措施。', '4.3.3建筑场地类别：Ⅱ类，设计地震分组：第二组，特征周期值：0.40s。', '4.3.4结构阻尼比取值：0.05，', '4.3.5本场地地基土层地震液化程度判定：非液化场地。', '名称', '等级或分类', '建筑抗震设防类别', '标准设防类（丙类）', '地基基础设计等级', '丙级', '抗震等级', '四级', '抗震构造措施等级', '四级', '建筑耐火等级', '二级', '7.主要结构材料', '设计中采用的材料，必须具有出厂质量证明书或试验报告单，并在进场后按现行国家有关规定进行检验和试验，合格后方可在工程中使用。', '7.1混凝土材料', '7.1.1混凝土强度等级见表7.1.1，防水混凝土的设计抗渗等级为P6:', '表7.1.1混凝士强度等级', '构造柱，过', '现浇楼板', '梁、粱', '基础垫层', '基础', 'C30', 'C25', 'C15', 'C30', '7.1.2结构混凝土材料的耐久性基本要求见表7.1.2：', '表7.1.2结构混凝土材料的耐久性基本要求', '环境等级最大水胶比', '最低混凝土强度等级', '最大氯离子含量(%)', '最大碱含量(kg/m3)', '0.60', 'C20', '0.30', '不限制', '二0', '0.55', 'C25', '0.20', '3.0', '二b0.50(0.55)', 'C30(C25)', '0.15', '3.0', '注：（①）.氯离子含量系指其占胶凝材料总量的百分比。防水混凝土中最大氯离子含量为0.1%。', '(2).预应力构件混凝土中的氯离子含量为0.06%；其最低混凝土强度等级宜按表中的规定提高两个等级。', '(3).处于严寒和寒冷地区二b类环境中的混凝土应使用引气剂，并可采用括号中的有关参数。', '(4).防水混凝土中水泥用量不宜小于260kg/m,胶凝材料总用量不宜小于320kg/m3', '(5).当使用非碱活性骨料时，对混凝土中的碱含量可不做限制。', '7.2钢筋及钢材', '7.2.1钢筋的强度标准值应具有不小于95%的保证率。', '7.2.2纵向受力钢筋，箍筋采用c-HRB400级热轧钢筋.其它采用中-HPB300级热乳钢筋，其强度应满足表7.2.2：', '表7.2.2普通铜筋强度标准值和设计值', '牌号符号屈服强度标准值(N/m2)极限强度标准值fs(N/m㎡)', '抗拉强度设计值f,(N/m2)', 'HPB300中', '300', '420', '270', 'HRB400', '400', '540', '360', '7.23、二、三级框架和斜撑构件（含梯段）的纵向受力钢筋（均采用带E钢筋）的抗拉强度实测值与屈服强度实测值的比值不应小于1.25', '钢筋的屈服强度实测值与屈服强度标准值的比值不应大于1.30：钢筋在最大拉力下的总伸长率实测值不应小于9%。', '7.2.4吊环采用HPB300级钢筋制作，锚入混凝土的深度不小于30d并焊接或绑扎在钢筋骨架上。', '7.2.5受力预埋件的锚筋应采用HRB400级或HPB300级钢筋，不得采用冷加工钢筋。', '7.2.6在施工中，当需要以强度等级较高的钢筋代替原设计中的纵向受力钢筋时，应按照钢筋受拉承载力设计值相等的原则换算，并应满足最小配筋率要求。', '7.2.7钢筋焊接焊条的选用及焊接质量应满足《钢筋焊接及验收规程》JGJ18-2012的要求。钢筋与型钢焊接随钢筋定焊条。', '7.2.8钢筋机械连接接头的选用应满足《钢筋机械连接技术规程》JGJ107-2010的要求。', '7.2.9预埋件的锚板，局部钢结构的钢材采用Q235-B钢。', '7.2.10钢结构的钢材的屈服强度实测值与抗拉强度实测值的比值不应大于0.85：钢材应有明显的屈服台阶，且伸长率不应小于20%：钢材', '应有良好的焊接性和合格的冲击韧性。', '7.2.11承重结构采用的钢材应具有抗拉强度、伸长率、屈服强度和硫、磷含量的合格保证，对焊接结构尚应具有碳含量的合格保证。焊接', '承重结构以及非焊接承重结构采用的钢材还应具有冷弯试验的合格保证。', '7.2.12钢梁、钢柱、连接板，加劲板材质为Q355B,型材为Q355B,其力学性能和化学成分应符合《低合金高强度结构钢》', '(GB/T1591-2018)的规定：支撑、隅撑、槽钢、圆钢等材质为Q235(图中注明者除外)其力学性能和化学成分应符合', '《碳素结构钢》(GB/T700-2006)的规定', '7.3焊接材料', '7.3.1手工焊时，若主体金属为Q355钢时，采E50XX型焊条，其性能应符合《低合金焊条》(GB/T5118-1995)的规定；', '7.3.2手工焊时，若主体金属为Q235钢采E43XX型焊条，其性能应符合《碳钢焊条》(GB/T5117-1995)的规定：', '7.3.3手工焊时，若Q235钢与Q355钢焊接时，采43XX型焊条；', '7.3.4自动焊或半自动焊时采用能符合《焊接用钢丝》(GB1300)规定的焊丝，若主体金属为Q235钢时采用H08A焊丝，配合中锰', '型或高锰型焊剂；若主体金属为Q355钢时采用H08A焊丝，配合高锰型焊剂；', '7.4螺栓：', '7.4.1未注明的普通螺栓均为C级，螺栓螺母和垫圈采用《碳素结构钢》(GB/T700-2006)规定Q235钢的制作，其热处理', '制作和技术要求应符合《六角头螺栓C级》(GB5780-2016)、《GB41-2000》、《GB95》的规定：', '7.4.2高强螺栓及其配套的螺母和垫圈等，应符合国家标准《合金结构钢技术条件》(GB3077-1999)规定的20MTiB钢制成或采用符合', '头螺栓、大国家《钢结构用高强度大六角六角螺母、垫圈与技术条件》(GB/T1228~1231)规定的35VB制成；', '7.5铺栓及栓钉：', '7.5.1锚栓采用符合国家标准《碳素结构钢》(GB/T700-2006)规定的Q235B钢制成。', '7.5.2栓钉采用符合《电弧螺柱焊用圆柱头栓钉》(GB/T10433-2002)要求的ML15或ML15AL钢。', '7.6砌块填充墙：（施工质量控制等级要求达到B级）', '(1)墙体采用混凝土轻质墙板及加气混凝土砌块（强度不低于A3.5）;砂浆采用Ms5专用砌筑砂浆。', '(砌体及轻质墙板容重每立方不大于600Kg)', '士0.000以下室外砌体采MU15烧结页岩实心砖，采M7.5级水泥砂浆筑。', '8、地基与基础', '本工程根据甲方提供的201年9月份《河南正通化工有限公司年产1万吨食品乳化剂项目岩士工程勘察报告》，基础以第了层粉士为持', '力层，按地基承载力特征值134Kpo设计；', '建设场地工程地质情况：', '(1)勘察场地位于荣阳建设路与工c北路交叉口西南角，河南正通化工有限公司厂区内。', '场地内较平整地貌单元属山前冲洪积倾斜平原。']\n",
    "g_strs=[\"未经技术鉴定或设计许可不得改变设计文件规定的功能和使用条件\",\n",
    "\"应建立定期检测，维护制度\",\n",
    "\"对设计规定（橡胶支座）规定的构件，节点支座部件等应及时更换\",\n",
    "\"构件表面的防火、防腐保护层，应按设计规定和维护规范进行维护或更换\",\n",
    "\"结构及构件、节点、支座等超出设计规定的变形和耐久性缺陷时，应进行及时处理\",\n",
    "\"遭遇地震、火灾等灾害时，早后应对结构进行鉴定评估，并按照评估过意见处理后方可继续使用。\",\"防火规范\"]\n",
    "\n",
    "g1_strs=[\"建设地点、市\",\n",
    "\"基本风压\",\n",
    "\"基本雪压\",\n",
    "\"安全等级\",\n",
    "\"设计工作年限\",\n",
    "\"设防类别\",\n",
    "\"设防烈度\",\n",
    "\"抗震等级\",\n",
    "\"地基基础设计等级、设计等级\"]\n",
    "\n",
    "\n",
    "\n",
    "#第一个函数的搜索\n",
    "#print(j_fun1(sens,g1_strs))\n",
    "for i in range(len(g1_strs)):\n",
    "   \n",
    "    print(g1_strs[i]+\":\")\n",
    "    print(j_fun1(sens,g1_strs)[i])\n",
    "    print(\"----------------\")\n",
    "\n",
    "#第三个函数的搜索    \n",
    "strs_t,difs=j_fun3(sens,g_strs)\n",
    "for i in range(len(strs_t)):\n",
    "    if strs_t[i][0] >0:\n",
    "            print( \"√---\"+strs_t[i][1])\n",
    "            print(\"相关性=\",strs_t[i][0])\n",
    "            print(\"规范对应条文：\"+g_strs[i])\n",
    "            print(difs[i])\n",
    "            print( \"-----------------------------------\")\n",
    "    else:\n",
    "        print(\"×#############\"+strs_t[i][1])\n",
    "        print(\"规范对应条文：\"+g_strs[i])\n",
    "        print( \"-----------------------------------\")\n",
    "\n",
    "\n",
    "# —————— Copyright (C)2022 song4875343 All Rights Reserved —————— END OF FILE —————— #\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-03-24T14:45:59.546336Z",
     "start_time": "2022-03-24T14:45:59.017750Z"
    },
    "code_folding": [
     101
    ]
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "使用的规范#######################\n",
      "《三)本工程设计遵循的主要标准、规范、规程》\n",
      "《建筑结构可靠性设计统一标准(GB50068-2018)\n",
      "《建筑工程抗震设防分类标准》(GB50223-2008)\n",
      "《建筑结构荷载规范(GB50009-2012)\n",
      "《建筑抗震设计规范》(2016年版GB50011-2010)\n",
      "《建筑地基基础设计规范》(GB50007-2011)\n",
      "《河南省建筑地基基础勘察设计规范(DBJ41/138-2014)\n",
      "《砌体结构设计规范》(GB50003-2011)\n",
      "《建筑变形测量规范》UGJ8-2016\n",
      "《钢结构设计标准》(GB50017-2017)\n",
      "《门式刚架轻型房屋钢结构设计规范》(GB51022-2015)\n",
      "《冷弯薄壁型钢结构技术规范》(GB50018-2002)\n",
      "《钢结构焊接规范》(GB50661-2011)\n",
      "《涂覆涂料前钢材表面处理表面清洁度的目视评定》(GB/T8923.1-2011\n",
      "《钢结构高强度螺栓连接技术规程》(UGJ82-2011)\n",
      "《建筑设计防火规范》(2018年版)(GB50016-2014)\n",
      "《钢结构防火涂料应用技术规程》(CECS224-90)\n",
      "《建筑钢结构防火技术规范》(GB51249-2017)\n",
      "《钢结构工程施工质量验收规范》(GB50205-2020)\n",
      "《混凝土结构工程施工质量验收规范》(GB50204-2015)\n",
      "《焊缝无损检测超声检测技术、检测等级和评定》(GB/T11345-2013)\n",
      "《压型金属板工程应用技术规范》(GB50896-2013)\n",
      "《混凝土结构通用规范》(GB5006-2021)\n",
      "《工程结构通用规范》(GB55001-2021)\n",
      "《砌体结构通用规范》(GB55007-2021)\n",
      "《建筑与市政工程抗震通用规范》(GB55002-2021)\n",
      "使用的活荷载####################\n",
      "{'住宅房间': '2.0', '过道、阳台、卫生间': '2.5', '不上人屋面': '0.5', '上人星面': '2.0'}\n",
      "26\n",
      "《建筑结构可靠性设计统一标准》 2018 ----大概率正确---√,可能为:《建筑结构可靠度设计统一标准》,2018\n",
      "《建筑工程抗震设防分类标准》 2008 ----查表正确----√\n",
      "《建筑结构荷载规范》 2012 ----查表正确----√\n",
      "《建筑抗震设计规范》 2016 ----查表正确----√\n",
      "《建筑地基基础设计规范》 2011 ----查表正确----√\n",
      "《河南省建筑地基基础勘察设计规范》 2014 ----查表正确----√\n",
      "《砌体结构设计规范》 2011 ----查表正确----√\n",
      "《建筑变形测量规范》 2016 ----查表正确----√\n",
      "《钢结构设计标准》 2017 ----查表正确----√\n",
      "《门式刚架轻型房屋钢结构设计规范》 2015 ----查表正确----√\n",
      "《冷弯薄壁型钢结构技术规范》 2002 ----查表正确----√\n",
      "《钢结构焊接规范》 2011 ----查表正确----√\n",
      "《涂覆涂料前钢材表面处理表面清洁度的目视评定》 2011 ----查表正确----√\n",
      "《钢结构高强度螺栓连接技术规程》 2011 ----查表正确----√\n",
      "《建筑设计防火规范》 2018 ----查表正确----√\n",
      "《钢结构防火涂料应用技术规程》 90 ----查表正确----√\n",
      "《建筑钢结构防火技术规范》 2017 ----查表正确----√\n",
      "《钢结构工程施工质量验收规范》 2020 ----查表正确----√\n",
      "《混凝土结构工程施工质量验收规范》 2015 ----查表正确----√\n",
      "《焊缝无损检测超声检测技术、检测等级和评定》 2013 ----查表正确----√\n",
      "《压型金属板工程应用技术规范》 2013 ----查表正确----√\n",
      "《混凝土结构通用规范》 2021 ----查表正确----√\n",
      "《工程结构通用规范》 2021 ----查表正确----√\n",
      "《砌体结构通用规范》 2021 ----查表正确----√\n",
      "《建筑与市政工程抗震通用规范》 2021 ----查表正确----√\n",
      "[0.93, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]\n",
      "住宅房间 2.0 ----大概率正确---√,可能为:住宅,2.0\n",
      "过道 2.5 ##########库中未找到对应条目#########,可能为:屋顶运动场,4.5\n",
      "阳台 2.5 ----大概率正确---√,可能为:其他阳台,2.5\n",
      "卫生间 2.5 ----查表正确----√\n",
      "不上人屋面 0.5 ----查表正确----√\n",
      "上人星面 2.0 ----大概率正确---√,可能为:上人屋面,2.0\n",
      "[0.6666666666666666, 0, 0.6666666666666666, 1.0, 1.0, 0.75]\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "[0.6666666666666666, 0, 0.6666666666666666, 1.0, 1.0, 0.75]"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#第二个判别函数    \n",
    "import copy,jieba\n",
    "def j_fun2(sens):\n",
    "    #把有书名号且，书名号在字符串的最尾端的字符找出来\n",
    "    r1_strs=[]\n",
    "    r2_strs={}\n",
    "    sens_t=copy.deepcopy(sens)\n",
    "    #获取规范\n",
    "  \n",
    "                \n",
    "    #把有书名号《，最后一个字符是》范 程 准 版 ）下一个字符串第一个是...的把两个字符串混在一起\n",
    "\n",
    "    for j in range(len(sens_t)):\n",
    "        str2=sens_t[j]\n",
    "        \n",
    "        if str2 !=\"\" and \"《\" in str2 and j<len(sens_t)-1:\n",
    "            if  (str2[len(str2)-1] in [\"》\",\"范\",\"程\",\"版\",\")\",\"准\"] or str2.index(\"《\")==0 )   and sens[j+1][0] in [\"G\",\"J\",\"(\",\"U\",\"{\"]:\n",
    "                sens_t[j]=sens_t[j]+sens_t[j+1] \n",
    "    #print(sens_t)\n",
    "\n",
    "    #把没有书名号的判断一下，加上书名号，这种一般在总说明的规范列表中，所以识别一般规范在最前面最多前面有序号\n",
    "    i=0\n",
    "    for st in sens_t:\n",
    "        for s in [\"标准\",\"规范\",\"规程\"]:\n",
    "            if s in st and \"《\" not in st and \"》\" not in st: \n",
    "                sens_t[i]=\"《\" +st.replace(s,s+\"》\",1)\n",
    "        i+=1\n",
    "                \n",
    "    \n",
    "    for st in sens_t:\n",
    "        if \"《\" in st:\n",
    "            if \")\" in st :\n",
    "                if len(st)<40 and \"《\"==st[0] :r1_strs.append(st);continue\n",
    "                elif (st.count(\")\")==1 and st.count(\"(\")==1):\n",
    "                    r1_strs.append(st[st.index(\"《\"):st.index(\")\")+1]);continue\n",
    "                elif(st.count(\")\")==2 and st[len(st)-1]==\")\" ):r1_strs.append(st[st.index(\"《\"):]);continue\n",
    "            elif \"《\"==st[0] and st[len(st)-1].isdigit(): r1_strs.append(st);continue\n",
    "            elif  st[len(st)-1].isdigit(): r1_strs.append(st[st.index(\"《\"):]);continue\n",
    "\n",
    "    m1=r1_strs\n",
    "    m2=list(set(m1))\n",
    "    m2.sort(key=m1.index)\n",
    "    r1_strs=m2\n",
    "    \n",
    "    #获取活荷载 下面语句u'\\u4e00' <= st[0] <= u'\\u9fff'是判断第一个字符是不是汉字\n",
    "    i=0\n",
    "    for st in sens_t:\n",
    "        if len(st)<=12 and u'\\u4e00' <= st[0] <= u'\\u9fff' and sens_t[i+1][0].isdigit() and len(jieba.lcut(sens_t[i+1]))==1:\n",
    "            r2_strs[st]=sens_t[i+1] \n",
    "        i+=1\n",
    "\n",
    "    return r1_strs,r2_strs\n",
    "\n",
    "#规范版本比对函数\n",
    "def gfvs(s,g):\n",
    "    flg=[0 for i in range(len(s))]\n",
    "    i=0\n",
    "    \n",
    "    for k in s.keys():\n",
    "        for k_g in g.keys():\n",
    "                if j_words(k,k_g,1)>=flg[i]:flg[i]=j_words(k,k_g,1);k_tem=k_g\n",
    "        if flg[i]==1:\n",
    "            #print(k,s[k],\"版本已找到\")\n",
    "            if g[k]==s[k]:\n",
    "                print(k,s[k],\"----查表正确----√\")\n",
    "\n",
    "            elif s[k]==\"\":print(k,s[k],\"查表结果为:\",g[k])\n",
    "            else :print(k,s[k],\"###查表错误####,正确为:\",g[k])\n",
    "        elif flg[i]>0.6:\n",
    "            if g[k_tem]==s[k]:\n",
    "                print(k,s[k],f\"----大概率正确---√,可能为:{k_tem},{g[k_tem]}\")\n",
    "            elif s[k]==\"\":print(k,s[k],\"大概率查表结果为:\",k_tem,g[k_tem])\n",
    "            else:print(k,s[k],f\"###大概率错误####,大概率正确正确为:{k_tem},{g[k_tem]}\")\n",
    "        else:\n",
    "            print(k,s[k],f\"##########库中未找到对应条目#########,可能为:{k_tem},{g[k_tem]}\")\n",
    "        i+=1\n",
    "    print(flg)\n",
    "    return flg\n",
    "        \n",
    "#输入整理好的规范字符串，整理成字典。\n",
    "def stod(strs):\n",
    "    d={}\n",
    "    for s in strs:\n",
    "        if re.search(\"《.*?[范程准]\",s) and not re.search(\"》\",s):\n",
    "            if re.search(\"20\\d\\d.?版\",s):d[re.search(\"《.*?[范程准]\",s).group()+\"》\"]=re.search(\"20\\d\\d.?版\",s).group()[0:4]            \n",
    "            elif re.search(\"[-~]\\d*\",s):d[re.search(\"《.*?[范程准]\",s).group()+\"》\"]=re.search(\"[-~]\\d*\",s).group()[1:]\n",
    "\n",
    "        if re.search(\"《.*?》\",s):\n",
    "            if re.search(\"20\\d\\d.?版\",s):d[re.search(\"《.*?》\",s).group()]=re.search(\"20\\d\\d.?版\",s).group()[0:4]            \n",
    "            elif re.search(\"[-~]\\d*\",s):d[re.search(\"《.*?》\",s).group()]=re.search(\"[-~]\\d*\",s).group()[1:]\n",
    "    return d\n",
    "#把键值为多个主体词用顿号隔开的复杂字典变成简单字典\n",
    "def dmtods(d2):\n",
    "    d3={}\n",
    "    for s1 in d2.keys():\n",
    "        for k1 in re.split(\"、\",s1):\n",
    "            d3[k1]=d2[s1]\n",
    "    return d3\n",
    "\n",
    "#自编的判断短语近似度的函数，低于阈值返回零，大于阈值返回相关值，如果可选参数有值，将不管阈值全部输出比较值。\n",
    "def j_words(str1,str2,*k):\n",
    "    k0=1 if k else 0\n",
    "    str11 = jieba.lcut(str1)\n",
    "    str22 = jieba.lcut(str2)\n",
    "    g_flg=0\n",
    "    diff_result = difflib.SequenceMatcher(None, str1, str2).ratio()\n",
    "    diff_rb=min(diff_result,fuzz.ratio(str1, str2)/100)\n",
    "    diff_rc=min(cos_sim(str11, str22),edit_similar(str11, str22))\n",
    "    diff_ra=max(diff_rb,diff_rc)\n",
    "    diff_rd=max(diff_result,fuzz.ratio(str1, str2)/100,cos_sim(str11, str22),edit_similar(str11, str22))\n",
    "    if (diff_ra>0.30 and diff_rd>0.45) or diff_ra>0.35:\n",
    "        #print(f\"两句话有比较相近的关联程度，相似度ra={diff_ra},相似度rd={diff_rd}\")\n",
    "        g_flg=diff_ra\n",
    "    else:\n",
    "        #print(\"两句话没啥关系\")\n",
    "        g_flg=g_flg*k0\n",
    "    return g_flg\n",
    "\n",
    "\n",
    "#利用百度接口的判断短语近似度的函数返回相关值，可用度不好，模糊度太大。\n",
    "from aip import AipNlp\n",
    "def j_words_aip(str1,str2):\n",
    "    \"\"\" 你的 APPID AK SK \"\"\"\n",
    "    APP_ID = '25827715'\n",
    "    API_KEY = '8rb7DAjL6wYFUMwMyjKRcV2r'\n",
    "    SECRET_KEY = 'MCIQsXlt0lgF4bHnonRKIehfdwsTb7V4'\n",
    "\n",
    "    client = AipNlp(APP_ID, API_KEY, SECRET_KEY)\n",
    "    return client.simnet(str1,str2)[ 'score']\n",
    "\"\"\"\n",
    "#这这个规范查表函数，应为表格中的术语都是日常用于可以使用synonyms库，如果是规范什么的查表最好用gfvs,更通用一些\n",
    "#这个库每天第一次运行超级慢，不是太好用还是暂时关了吧\n",
    "import synonyms as sy\n",
    "def hzvs(s,g):\n",
    "    flg=[0 for i in range(len(s))]\n",
    "    flg1=[0 for i in range(len(s))]\n",
    "    i=0\n",
    "    #print(s,g)\n",
    "    \n",
    "    for k in s.keys():\n",
    "        for k_g in g.keys(): \n",
    "            if j_words(k,k_g,1)>flg[i]:flg[i]=j_words(k,k_g,1);k_tem=k_g\n",
    "            if sy.compare(k,k_g)>flg1[i]:flg1[i]=sy.compare(k,k_g);k_tem1=k_g\n",
    "        \n",
    "        if flg[i]==1:\n",
    "            if g[k_tem]==s[k]:\n",
    "                print(k,s[k],f\"----荷载正确----√规范内容为：{k_tem},{g[k_tem]}\")\n",
    "            else:print(k,s[k],f\"###荷载错误####,可能为:{k_tem},{g[k_tem]}\")      \n",
    "        elif flg[i]>0.6:    \n",
    "            if g[k_tem]==s[k]:\n",
    "                print(k,s[k],f\"----荷载大概率正确----√规范内容为：{k_tem},{g[k_tem]}\")\n",
    "            else:print(k,s[k],f\"###荷载错误####,可能为:{k_tem},{g[k_tem]}\")\n",
    "        else:print(k,s[k],f\"##########库中未找到对应条目#########,可能为:{k_tem1},{g[k_tem1]}\")\n",
    "        i+=1\n",
    "    print(flg)\n",
    "    return\n",
    "\"\"\"\n",
    "\n",
    "#第二个函数的搜索\n",
    "sens=['住宅房间', '2.0', '过道、阳台、卫生间', '2.5', '3.5', '不上人屋面', '0.5', '上人星面', '2.0', '楼梯、阳合等栏杆水平荷载', '1.0 KN/m', '雨棵、挑槽等菇工检修荷载', '1.0KN','三)本工程设计遵循的主要标准、规范、规程', '1.《建筑结构可靠性设计统一标准', '(GB50068-2018)', '2.《建筑工程抗震设防分类标准》', '(GB50223-2008)', '3.《建筑结构荷载规范', '(GB50009-2012)', '4.《混凝土结构设计规范》(2015年版', '(GB50010-2010)', '5.《建筑抗震设计规范》(2016年版', 'GB50011-2010)', '6.《建筑地基基础设计规范》', '(GB50007-2011)', '7.《河南省建筑地基基础勘察设计规范', '(DBJ41/138-2014)', '8,《砌体结构设计规范》', '(GB50003-2011)', '9.《建筑变形测量规范》', 'UGJ8-2016', '10.《钢结构设计标准》', '(GB50017-2017)', '1.《门式刚架轻型房屋钢结构设计规范》', '(GB51022-2015)', '12.《冷弯薄壁型钢结构技术规范》', '(GB50018-2002)', '13.《钢结构焊接规范》', '(GB50661-2011)', '14.《涂覆涂料前钢材表面处理表面清洁度的目视评定》(GB/T8923.1-2011', '15.《钢结构高强度螺栓连接技术规程》', '(UGJ82-2011)', '16.《建筑设计防火规范》(2018年版)', '(GB50016-2014)', '17.《钢结构防火涂料应用技术规程》', '(CECS224-90)', '18.《建筑钢结构防火技术规范》', '(GB51249-2017)', '19.《钢结构工程施工质量验收规范》', '(GB50205-2020)', '20.《混凝土结构工程施工质量验收规范》', '(GB50204-2015)', '21.《焊缝无损检测超声检测技术、检测等级和评定》(GB/T11345-2013)', '22.《压型金属板工程应用技术规范》', '(GB50896-2013)', '23.《组合楼板设计与施工规范》', 'UGJ138-2016)', '24.《钢结构通用规范》', '{GB55006-2021)', '25.《混凝土结构通用规范》', '(GB5006-2021)', '26.《工程结构通用规范》', '(GB55001-2021)', '27.《砌体结构通用规范》', '(GB55007-2021)', '28.《建筑与市政工程抗震通用规范》', '(GB55002-2021)', '本工程按现行国家设计标准进行设计，施工时除应遵守本说明及各设计图纸说明外，尚应', '执行现行国家及工程所在地区的相关设计（技术）规范和技术规程。']\n",
    "#sens=['7.《河南省建筑地基基础勘察设计规范', '(DBJ41/138-2014)']\n",
    "#sens=['1)', '建筑结构可靠度设计统一标准(GB50068-2018)', '2)', '建筑工程抗震设防分类标准(GB50223-2008)', '建筑结构荷载规范(GB50009-2012)', '4)', '混凝土结构设计规范(GB50010-2010)(2015年版', '5)', '建筑抗震设计规范(GB50011-2010)(2016年版', '6)', '高层建筑混凝土结构技术规程(JGJ3-2010)', '7)', '建筑地基基础设计规范(GB50007-2011)', '8)', '建筑桩基技术规范(JGJ94-2008)', '9)', '砌体结构设计规范(GB50003-2011)', '10)', '建筑工程抗浮技术标准(JGJ476-2019)', '11)', '钢结构设计标准(GB50017-2017)', '12)', '组合结构设计规范(JGJ138-2016', '13)', '工程结构通用规范(GB55001-2021', '14)', '建筑与市政工程抗震通用规范(GB55002-2021', '15)', '建筑与市政地基基础通用规范GB55003-2021', '16', '组合结构通用规范(GB55004-2021)*', '17', '钢结构通用规范(GB55006-2021)', '18', '砌体结构通用规范(GB55007-2021)', '19)', '混凝土结构通用规范(GB55008-2021)', '20)', '工程测量通用规范(GB55018-2021)', '21)', '地下工程防水技术规范(GB50108-2008)', '22)', '建筑设计防火规范GB50016-2014)(2018年版', '23', '河南省建筑地基基础勘察设计规范(DBJ41138-2014)', '24)', '建筑工程工质量验收统一标准GB50300-2013', '25)', '砌体结构工程施工质量验收规范(GB50203-2011)', '26', '混凝土结构工程施工质量验收规范(GB50204-2015)', '27)', '建筑地基基础工程施工质量验收规范(GB50202-2018)', '28)', '建筑基桩检测技术规范(JGJ106-2014)', '29)', '中国地震动参数区划图(GB18306-2015)', '30', '人民防空地下室设计规范(CB50038-2005)*', '31)', '混凝土结构施工图平面整体表示方法制图规则和构造详图', '(16G101-1~16G101-3)', '32)', '建筑结构设计规范应用图示地基基础(13SG108-1)']\n",
    "k2,k3=j_fun2(sens)\n",
    "print(\"使用的规范#######################\")\n",
    "for i in  k2:print(i)\n",
    "print(\"使用的活荷载####################\")\n",
    "print (k3)\n",
    "print(len(k2))\n",
    "#print (j_fun2(sens))\n",
    "import json\n",
    "\n",
    "#第二段函数，规范的判断，活荷载的判断\n",
    "s_d=stod(k2)\n",
    "#print(s_d)\n",
    "#s1={\"住宅房间\": \"2.0\", \"过道、阳台、卫生间\": \"2.5\", \"不上人屋面\": \"0.5\", \"上人屋面\": \"2.0\"}\n",
    "s1=k3\n",
    "with open('通规活荷载.txt', 'r', encoding='utf-8') as f:\n",
    "    d1= json.load(f)\n",
    "    g_d=d1[0]\n",
    "    h_d=d1[1]\n",
    "    #print(g_d)\n",
    "    f.close\n",
    "\n",
    "\n",
    "#对规范进行评价\n",
    "gfvs(s_d,g_d)\n",
    "#对荷载进行评价\n",
    "#打印库里的荷载规范\n",
    "#[print(i) for i in d2.items()]\n",
    "#hzvs(dmtods(s1),dmtods(h_d))\n",
    "gfvs(dmtods(s1),dmtods(h_d))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.9"
  },
  "varInspector": {
   "cols": {
    "lenName": 16,
    "lenType": 16,
    "lenVar": 40
   },
   "kernels_config": {
    "python": {
     "delete_cmd_postfix": "",
     "delete_cmd_prefix": "del ",
     "library": "var_list.py",
     "varRefreshCmd": "print(var_dic_list())"
    },
    "r": {
     "delete_cmd_postfix": ") ",
     "delete_cmd_prefix": "rm(",
     "library": "var_list.r",
     "varRefreshCmd": "cat(var_dic_list()) "
    }
   },
   "position": {
    "height": "620.852px",
    "left": "1558px",
    "right": "20px",
    "top": "159px",
    "width": "350px"
   },
   "types_to_exclude": [
    "module",
    "function",
    "builtin_function_or_method",
    "instance",
    "_Feature"
   ],
   "window_display": true
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
